'''
遥测源码转CSV程序 
1 根据遥测源码文件 生成ConfigCALL.xml文件
2 调用DataTillCore.exe文件完成 CSV文件产生
'''
# import glob
import os
from glob import glob
import time

def dat2csv(): 
    current_cwd = os.getcwd()  # 保持路径跳转至对于文件夹
    dat_files = glob('tm_ycdat\\*.dat')  # 找到所有需要处理的遥测文件
    if len(dat_files) == 0:
        print('未发现遥测源码 结束处理')
        return
    cfg_xml = list()  # XML遥测文件路径
    for fname in dat_files:
        foo1 = f' "{current_cwd}\\{fname}"'
        foo2 = f'<file fileDir ={foo1} fileChn="18" fileChnNum="0"></file>\n'
        cfg_xml.append(foo2)    
    # 读入文件头和文件尾
    with open('cfg_xml_head.txt', 'r', encoding='utf-8') as xml_head:
        head = xml_head.read()
    with open('cfg_xml_tail.txt', 'r', encoding='utf-8') as xml_tail:
        tail = xml_tail.read()    
    # 写入文件头 遥测源码文件 文件尾
    with open('datatill\ConfigCALL.xml', 'w') as f:
        f.write(head)
        f.write('\n')
        for txt in cfg_xml:
            f.write(txt)
        f.write(tail)

    
    os.system(f'start .\datatill\DataTillCore.exe')
    # 等待事后处理转换完成
    cnt = len(glob('tm_ycdat\\*.tmp'))
    print(f"调用事后处理软件 最多等待{cnt*10}秒")
    for i in range(cnt*10):  # 10表示一个文件等待10秒
        yc_file = glob('tm_yccsv\*.dat')
        if len(yc_file) == 1 :
            print(f'事后处理软件执行完毕 生成文件{yc_file[0]}')
            break
        elif len(yc_file) == 0:
            print(f'{i}.事后处理软件处理中...')
            time.sleep(1)
        else: 
            print('已有CSV文件 需删除后重新生成')
            break

    
# if __name__ == "__main__":
#     dat2csv()
#     print('end')